package com.feemanage.domain.vo;

import com.common.validate.add;
import com.common.validate.edit;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.framework.config.BigDecimalSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 经费调账获取页面信息
 */
@Data
@ApiModel("经费调账列表")
public class BudegtAlterationVO {

    /**
     * 自增ID
     */
    @ApiModelProperty("主键id")
    @NotNull(message = "id不能为空", groups = {edit.class})
    private String id;

    /**
     * 项目ID
     */
    @ApiModelProperty("项目id")
    @NotNull(message = "项目不能为空", groups = {add.class,edit.class})
    private String projectId;

    /**
     * 合同金额
     */
    @ApiModelProperty("项目信息-批准经费")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal feeAuthorize;

    /**
     * 项目名称
     */
    @ApiModelProperty("项目信息-项目名称")
    private String projectName;

    /**
     * 负责人
     */
    @ApiModelProperty("项目信息-负责人")
    private String chargerName;


    /**
     * 所属单位
     */
    @ApiModelProperty("项目信息-所属单位")
    private String unitName;

    /**
     * 开始日期
     */
    @ApiModelProperty("项目信息-开始日期")
    private LocalDate beginDate;


    /**
     * 计划完成日期
     */
    @ApiModelProperty("项目信息-计划完成日期")
    private LocalDate planEndDate;


    /** 调账原因 */
    @ApiModelProperty("调账原因")
    @NotNull(message = "调账原因不能为空", groups = {add.class,edit.class})
    private String alterreason;

    /** 审核状态 */
    @ApiModelProperty("审核状态")
    private String checkstatus;

    @ApiModelProperty("审核日期")
    private String checkdate;

    @ApiModelProperty("审核人")
    private String checker;

    /** 点击的按钮状态 */
    @ApiModelProperty("详情页点击按钮状态")
    private String status;

    /** 项目性质 */
    @ApiModelProperty("项目性质")
    private String projectClass;

    @ApiModelProperty("流程实例id")
    private String processInstanceId;

    @ApiModelProperty("流程节点id")
    private String taskId;

    @ApiModelProperty("是否是审核人")
    private Boolean isAuditor;

    @ApiModelProperty("经费卡list")
    private List<AmountAlterationVO> amountAlterationVO;

    @ApiModelProperty("经费卡对应的科目及费用list")
    private List<BudgetAmountAlterationVO> budgetAmountAlterationVO;

}

